CG_CLIENT_INFO = {
    {"cpuArchitecture", 1, "string"},
    {"language", 1, "string"},
    {"os", 1, "string"},
    {"playerType", 1, "string"},
    {"screenDPI", 1, "int"},
    {"screenResolutionX", 1, "int"},
    {"screenResolutionY", 1, "int"},
    {"touchscreenType", 1, "string"},
    {"version", 1, "string"},
    {"isDebugger", 1, "bit", 1},
    {"font", 1, "bit", 7},
}
CG_CLIENT_ERR_LOAD = {
    {"url", 1, "string"}
}
CG_CLIENT_ERR_DECODE = {
    {"url", 1, "string"}
}
CG_CLIENT_ERR_MEM_MAP = {
    {"map_id", 1, "int"},
    {"privateMemory", 1, "int"},
    {"totalMemory", 1, "int"},
    {"freeMemory", 1, "int"},
}
CG_AA_DISCONNECT = {
    {"reason", 1, "int"},
}
CG_ASK_LOGIN = {
    {"account",			1, "string"},
    {"fcm",				1, "int"},
    {"ticket",			1, "string"},
    {"authkey",			1, "string"},	-- 校验key
    {"timestamp",		1, "int"},		-- 时间戳
    {"serverid",		1, "int"},		-- 服务器id
    {"openid",			1, "string"},	-- openid
    {"openkey",			1, "string"},	-- openkey
    {"pf",				1, "string"},	-- pf
    {"pfkey",			1, "string"},	-- pfkey
    {"yellowYearVip",	1, "int"},		-- 是否黄钻年vip
    {"yellowVip",		1, "int"},		-- 是否黄钻
    {"yellowVipLv",		1, "int"},		-- 黄钻等级
    {"appContractId",	1, "string"},	-- 任务集市ID
    {"isMiniClient",	1, "int"},		-- 微端
    {"zoneid",			1, "int"},		-- zoneid
    {"x5sig",       1, "string"}, --x5sig
    { "blue", 1, "int"}, -- 是否蓝钻
    { "blueYear", 1, "int"}, -- 是否蓝钻年vip
    { "blueSuper", 1, "int"}, -- 是否蓝钻豪华
    { "blueLv", 1, "int"}, -- 蓝钻等级
    { "level3366", 1, "int"}, -- 3366等级
}

WL_ASK_LOGIN = {
    {"account",   1, "string"},
    {"id",        1, "int"},
    {"uid",       1, "int"},
    {"fd",        1, "int"},  -- fd
    {"middleActID", 1, "string"},  --登陆跨服时进入的活动ID
    {"middleCopyID", 1, "int"},    --登陆跨服时进入的副本ID
}
LW_ASK_LOGIN_OK = {     --通知w线程玩家登陆成功
{"sceneid",      1, "int"},
}

WL_ASK_CHANGE_SCENE = {
    {"account",   1, "string"},
    {"map_id",    1, "int"},
    {"x",     1, "int"},
    {"y",     1, "int"},
    {"id",     1, "int"},
    {"uid",     1, "int"},
    {"fd",      1, "int"},
    {"login",   1, "int"},
}
GC_ZZ_HUMAN_INFO = {
    {"id",				1,  "int"},
    {"uuid",			1 , "string"},
    {"name",			1 , "string"},
    {"familyUuid",		1 , "string"},
    {"familyName",		1 , "string"},
    {"sex",				1,  "bit", 2},
    {"fcm",           1,  "bit", 2},
    {"head",          1,   "int"},
    {"server_time",		1,  "int"},
}

LoadFileInfo = {
    {"type",	  1, "int"},
    {"url",		  1, "string"},
}

GC_ENTER_SCENE = {
    {"map_id",    1, "int"},
    {"x",		  1, "int"},
    {"y",		  1, "int"},
    {"map_jpg",   1, "int"},
    {"copy_type", 1, "int"},
    {"loadList",  16, LoadFileInfo},
    {"difficult", 1, "int"},
    {"isPVP",     1,    "bit", 8},
    {"mapType", 1, "bit", 8}
}


CG_ASK_CHANGE_SCENE = {
    {"map_id",    1,	"int"},
    {"check",	  1,	"int"},
}
LW_ASK_CHANGE_SCENE = {
    {"map_id",   1,  "int"},
    {"x",     1, "int"},
    {"y",     1, "int"},
    {"middle", 1, "int"},
}

WL_AA_DISCONNECT = {
    {"code",    1,    "int"}
}

LW_AA_DISCONNECT = {
    {"account",  1,    "string"},
    {"objid",    1,    "int"},
    {"code",    1,    "int"}
}

CG_ENTER_SCENE_OK = {
    {"map_id",  1, "int"},
}
GC_ENTER_SCENE_OK = {
}

LW_ENTER_SCENE_OK = {    --通知w线程玩家进入场景OK
{"sceneid", 1, "int"},
}

ViewInfo = {
    {"sex",                         1,                      "int"},
    {"body",                        1,                      "int"},
    {"bodyColor",                   1,                      "int"},
    {"bone",                        1,                      "int"},
    {"weapon",                      1,                      "int"},
    {"weaponEffect",                1,                      "int"},
    {"weapon2",                     1,                      "int"},
    {"weapon2Effect",               1,                      "int"},
    {"pifeng",                      1,                      "int"},
    {"horse",                       1,                      "int"},
    {"bodyEffect",                  1,                      "int"},
    {"horseEffect",                 1,                      "int"},
    {"baowuSource",                 1,                      "int"},
    {"baowuEffect",                 1,                      "int"},
    {"head",                        1,                      "int"},
    {"official",                    1,                      "int"},
    {"leftarm",                     1,                      "int"},
    {"rightarm",                    1,                      "int"},
}

GC_ADD_PLAYER = {
    {"obj_id", 1, "int"},
    {"uuid", 1 , "string"},
    {"name", 1 , "string"},
    {"status", 1 , "int"},
    {"head", 1, "int"},
    {"viewInfo", 1,	ViewInfo},
    {"familyUuid", 1 , "string"},
    {"familyName", 1 , "string"},
    {"allyName", 1 , "string"},
    {"title",		1,		"int"},
    {"x", 1, "int"},
    {"y", 1, "int"},
    {"speed", 1, "int"},
    {"points", 64, "int"},
    {"dir", 1, "int"},
    {"bufInfo", 1, require("buffer.Proto").BufferInfo},
    {"hp", 1, "int"},
    {"hpMax", 1, "int"},
    {"mp",    1, "int"},
    {"mpMax", 1, "int"},
    {"sex", 1, "int"},
    {"lv", 1, "int"},
    {"combatMode", 1, "int"},
    {"combatSide", 1, "int"},
    {"awakeColor", 1, "int"},
    {"yellowVipLv", 1,     "bit", 4}, --黄钻等级
    {"yellowYearVip", 1,   "bit", 1}, --是否是年费黄钻, 1是，0 不是
    {"blueVipLv", 1,     "bit", 4}, --黄钻等级
    {"blueYearVip", 1,   "bit", 1}, --是否是年费黄钻, 1是，0 不是
    {"blueSuperVip", 1, "bit", 1},--是否是超级蓝钻, 1是，0 不是
    {"level3366",    1,  "int", 1}, --3366等级
    {"tgpInfo", 1, "int"}, 
}

GC_DEL_OBJ = {
    {"obj_id", 1, "int"},
    {"die", 1, "int"},
}

GC_OBJ_DIE = {
    {"obj_id", 1, "int"},
    {"x", 1, "int"},
    {"y", 1, "int"},
}

ST_REVIVE_ITEM = {
    {"item_name",               1,                      "string"},          --立即复活需要的道具名称
    {"item_cnt",                1,                      "int"},             --立即复活需要的道具数量
}

--玩家死亡通知
GC_HUMAN_DIE = {
    {"obj_id",                  1,                      "int"},             --死亡实体ID
    {"attackerType",            1,                      "int"},             --击杀者类型 0:怪物 1:玩家
    {"attacker",                1,                      "string"},          --击杀者名称
    {"revive_type",             1,                      "int"},             --复活类型
    {"revive_time",             1,                      "int"},             --复活需要cd
    {"autorevive_time",         1,                      "int"},             --自动触发需要cd
    {"revive_item",             4,                      ST_REVIVE_ITEM},    --立即复活需要道具
    {"die_txt",                 1,                      "string"},          --死亡描述
}


CG_MOVE = {
    {"points", 128, "int"},
    {"x", 1, "int"},
    {"y", 1, "int"},
}

GC_MOVE = {
    {"obj_id", 1, "int"},
    {"x", 1, "int"},
    {"y", 1, "int"},
    {"points", 128, "int"},
}

GC_STOP_MOVE = {
    {"dir", 1, "int"},
    {"obj_id",    1, "int"},
    {"x",     1, "int"},
    {"y",     1, "int"},
}


CG_HEART_BEAT = {}
GC_HEART_BEAT = {
    {"time", 1, "double"},
}

CG_JUMP = {
    {"mousex", 1,     "int"},
    {"mousey", 1,     "int"},
}

GC_JUMP = {
    {"obj_id", 1, "int"},
    {"x", 1, "int"},
    {"y", 1, "int"},
}


GC_DISCONNECT = {
    {"code", 1, "int"},
    {"msg",  1, "string"},
}

GC_SPEED_CHANGE = {
    {"obj_id", 1, "int"},
    {"speed", 1, "int"},
}

GC_CHANGE_DIR = {
    {"obj_id", 1, "int"},
    {"dir", 1, "int"},
}

GC_ADD_MONSTER = {
    {"obj_id", 1, "int"},
    {"type",   1, "bit", 4},
    {"monster_id", 1, "int"},
    {"name", 1 , "string"},
    {"x", 1, "int"},
    {"y", 1, "int"},
    {"status", 1, "int"},
    {"radius", 1, "int"},
    {"speed", 1, "int"},
    {"points", 64, "int"},
    {"dir", 1, "int"},
    {"rand_ai_name", 1, "string"},
    {"can_select", 1, "int"},
    {"solar_id", 1, "int"},
    {"solar_pos", 1, "int"},
    {"solar_config", 1, "double"},
    {"show_name", 1, "int"},
    {"name_color", 1, "int"},
    {"hp", 1, "double"},
    {"hpMax", 1, "double"},
    {"owner_uuid", 1, "string"},
    {"z", 1, "int"},
    {"hp_cnt", 1, "int"},
    {"lv", 1, "int"},

    {"bufInfo", 1, require("buffer.Proto").BufferInfo},
    {"viewInfo", 1, ViewInfo},
    {"body_scale", 1, "double"},
    {"body_height", 1, "int"},
    {"bindTask1", 1, "int"},
    {"bindTask2", 1, "int"},
    {"is_sp_cg", 1, "int"},
    {"firstHitUuid", 1, "string"},
    {"du_tiao_msec", 1, "int"},
    {"drop_type", 1, "int"},
    {"isSky", 1, "int"},
    {"combatSide", 1, "bit", 4}, -- 怪物边
    {"monsterType", 1, "int"}, --怪物类型
    {"canBlood", 1, "bit", 3}, --是否溅血
}
GC_BEFORE_OBJ_APPEAR = {
    {"obj_id", 1, "int"},
    {"cmd", 1, "int"},
}

GC_ADD_AOE = {
    {"obj_id", 1, "int"},
    {"owner_uuid", 1, "string"},
    {"owner_combatMode", 1, "int"},
    {"owner_combatSide", 1, "int"},
    {"bodyID", 1, "int"},
    {"bottomID", 1, "int"},
    {"x", 1, "int"},
    {"y", 1, "int"},
    {"speed", 1, "int"},
    {"isDie", 1, "int"},
    {"bodyEffectConfig", 1, "double"},
    {"bottomEffectConfig", 1, "double"},
    {"points", 64, "int"},
    {"dir", 1, "int"},
    {"show", 1, "bit",2},
    {"comboType", 1, "int"},
    {"comboArg1", 1, "int"},
    {"comboArg2", 1, "int"},
    {"onlyShowOwner", 1, "bit",2}, --1 只有owner能看着，0全部人能看着
}


GC_CHANGE_FIRST_HIT_UUID = {
    {"obj_id", 1, "int"},
    {"firstHitUuid", 1, "string"},
    {"firstHitName", 1, "string"},
    {"show", 1, "int"},
}

GC_OBJ_HP = {
    {"obj_id", 1, "int"},
    {"hp", 1,   "double"},
    {"hp_max", 1, "double"},
    {"mp",     1, "double"},
    {"mp_max", 1, "double"},
}

GC_CONTROL_STATUS_CHANGE = {
    {"noMove",    1, "int"},
    {"noSkill",   1, "int"},
    {"isGiddy",   1, "int"},
    {"isLuama",   1, "int"},
    {"msg",     1  , "string"},
}

--可视状态变更通知
GC_VIEW_STATUS_CHANGE = {
    {"objID",               1,          "int"},         --实体ID
    {"status",              1,          "int"},         --状态
    {"viewInfo",            1,          ViewInfo},      --可视数据
    {"awakeColor",          1,          "int"},
}

GC_DU_TIAO = {
    {"obj_id", 1, "int"},
    {"msec", 1, "int"},
}
GC_DU_TIAO_CANCEL = {
    {"obj_id", 1, "int"},
}


GC_OBJ_TALK = {
    {"obj_id", 1, "int"},
    {"txt", 1, "string"},
}


GC_ADD_ITEM = {
    {"owner_uuid", 1,"string"},
    {"obj_id",1,"int"},
    {"staticID",1,"int"},
    {"count",1,"int"},
    {"name",1 ,"string"},
    {"subType1",1,"int"},
    {"useBagCap",1,"int"},
    {"drop_icon",1,"int"},
    {"drop_effect",1,"int"},
    {"icon",1,"int"},
    {"color",1,"int"},
    {"src_x",1,"int"},
    {"src_y",1,"int"},
    {"x", 1, "int"},
    {"y", 1, "int"},
    {"drop_type", 1, "int"}
}



GC_ADD_NPC = {
    {"obj_id",    1, "int"},
    {"head_title", 1, "int"},
    {"name",    1 , "string"},
    {"npc_id",    1, "int"},
    {"body_id",   1, "int"},
    {"body_scale", 1, "double"},
    {"horse_id",   1, "int"},
    {"head_id",   1, "int"},
    {"body_height", 1, "int"},
    {"x",     1, "int"},
    {"y",     1, "int"},
    {"bindTask1", 1,  "int"},
    {"bindTask2", 1,  "int"},

    {"way",     1, "bit", 3},
    {"special_action", 1, "bit", 3},
}

GC_ADD_COLLECT = {
    {"obj_id",    1,  "int"},
    {"collect_id",  1,  "int"},
    {"name",    1 , "string"},
    {"body_id",   1,  "int"},
    {"body_scale", 1, "double"},
    {"body_effect", 1, "int"},
    {"bone",        1, "int"},   -- 1为有骨骼， 0没有
    {"effect_id", 1,  "int"},
    {"effect_config", 1,  "double"},
    {"dir",     1,  "int"},
    {"x",     1,  "int"},
    {"y",     1,  "int"},
    {"bindTask1", 1,  "int"},
    {"bindTask2", 1,  "int"},
    {"bornCmd",   1,  "int"},
    {"interactTask",  1,  "int"},
    {"interactAim",   1,  "int"},
    {"disappearClient", 1,  "int"},
    {"dailyTask",   1,  "int"},
    {"needQuery",   1,  "int"},
    {"xue_ren_jin_du_cur", 1, "int"},
    {"isShowShadow", 1, "int"}, --是否显示影子，0显示，1不显示
}

GC_ADD_DISPLAY = {
    {"obj_id", 1, "int"},
    {"body_id", 1, "int"},
    {"x", 1, "int"},
    {"y", 1, "int"},
    {"effectConfig", 1, "double"},
    {"name", 1, "string"},
}


GC_LIST_DISPLAY_N_NPC = {
    {"display", 2, GC_ADD_DISPLAY},
    {"npc", 2, GC_ADD_NPC},
}

GC_SHOW_DISPLAY = {
    {"body_id", 1, "int"},
    {"x", 1, "int"},
    {"y", 1, "int"},
    {"effectConfig", 1, "int"},
}

GC_SCRIPT_START = {
    {"script_id", 1, "string"},
    {"delay", 1, "int"},
}

CG_SCRIPT_STOP = {
    {"script_id", 1, "string"},
}

GC_SCRIPT_STOP = {
}

GC_CHONG_FENG = {
    {"obj_id", 1, "int"},
    {"x", 1, "int"},
    {"y", 1, "int"}
}

CG_NPC_JUMP = {
    {"npcID",  1, "int"},
}

GC_NPC_JUMP = {
    {"obj_id", 1,   "int"},
    {"x",    1,   "int"},
    {"y",    1,   "int"}
}

GC_SPACE_JUMP = {
    {"obj_id", 1,   "int"},
    {"x",    1,   "int"},
    {"y",    1,   "int"}
}

GC_OBJ_ACTION = {
    {"obj_id", 1, "int"},
    {"action_id", 1, "int"},
    {"dir", 1, "int"},
}

GC_BEFORE_OBJ_APPEAR = {
    {"obj_id", 1, "int"},
    {"cmd", 1, "int"},
}
GC_SHOW_TXT = {
    {"txt", 1, "string"}
}
Rect = {
    {"x1", 1, "int"},
    {"y1", 1, "int"},
    {"x2", 1, "int"},
    {"y2", 1, "int"},
}
GC_BAN_ADD = {
    {"rect", 512, Rect}
}
GC_BAN_DEL = {
    {"rect", 512, Rect}
}

CG_RUSH_END = {
    {"x", 1, "int"},
    {"y", 1, "int"},
}

GC_ZHENG_DIAN = {
    {"hour",  1,    "int"}
}

WL_ZHENG_DIAN = {
    {"hour",  1,    "int"},
}

CG_AWAKE = {
}
GC_AWAKE = {
    {"objid",  1,   "int"},
    {"status", 1,   "bit", 8},
    {"time",   1,   "double"},
}

GC_QIAN_YAO_DU_TIAO = {
    {"obj_id", 1, "int"},
    {"qianyao_msec", 1, "int"},
    {"qianyao_effect", 1, "int"},
}
GC_DU_TIAO_CANCEL = {
    {"obj_id", 1, "int"},
}

GC_ADD_PET = {
    {"obj_id", 1, "int"},
    {"name", 1, "string"},
    {"x", 1, "int"},
    {"y", 1, "int"},
    {"speed", 1, "int"},
    {"points", 64, "int"},
    {"dir", 1, "int"},
    {"owner_name", 1, "string"},
    {"owner_uuid", 1, "string"},
    {"hp", 1, "int"},
    {"hp_max", 1, "int"},
    {"lv", 1, "int"},
    {"bufInfo", 1, require("buffer.Proto").BufferInfo},
    {"viewInfo", 1, ViewInfo},
    {"is_hide", 1, "int"},
    {"stageLv", 1, "int"}, --神将阶数
    {"body_h", 1, "int"}, --形象高度
    {"scale", 1, "double"}, --缩放
    {"star", 1, "int"}, --神将星级
}

GC_OBJ_HIDE = {
    {"obj_id", 1, "int"},
}

GC_ENTER_PVP_WARNING = {
    {"mapID",  1, "int"},
    {"areaID", 1, "int"},
    {"level",  1, "int"},
}

CG_HANG_POINT = {
    {"index", 1, "int"},
}
GC_HANG_POINT = {
    {"x", 1, "int"},
    {"y", 1, "int"},
    {"radius", 1, "int"},  --单径
    {"type", 1, "int"}, --type 0:无挂机点 1:有挂机点 2:有挂机点，暂时无怪,客户端等待(原地挂机)
    {"index", 1, "int"},  -- 当前在哪个点
}

GC_COUNTDOWN = {  -- 倒计时
{"num", 1, "int"},
{"type", 1, "bit", 2}, -- 0 原来的， 1为不显示开始
}

GC_DEL_COUNTDOWN = { --删除倒计时
}

GC_BEGIN_STORY_ACTION = {
    {"action", 1, "int"}, -- 1开始落雷 2结束落雷
}

GC_PIAO_HUA = {
    {"x", 1, "int"},
    {"y", 1, "int"},
    {"cmd", 1, "int"},
    {"effect_id", 1, "int"},
    {"half_w", 1, "int"},
    {"half_h", 1, "int"},
}

--音效
GC_SOUND_EFFECT = {
    {"id",        1,      "int"},
}

-- 获取怪物尸体奖励请求
CG_GET_MONSTERCORPSE_REWARD = {
    {"type",                        1,              "int"},
    {"monster_id",                  1,              "int"},
}

-- 获取怪物尸体奖励响应
GC_GET_MONSTERCORPSE_REWARD = {
    {"type",                        1,              "int"},
    {"monster_id",                  1,              "int"},
    {"curtimes",                    1,              "int"},                             -- 当前已搜寻次数
}

-- 怪物尸体次数消耗与奖励配置
ST_GET_TIMESCONSUME = {
    {"type",                        1,              "int"},                             -- 消耗类型 1:银两 2:元宝 ...
    {"consume",                     1,              "int"},                             -- 消耗值
    {"reward",		                2,	            require("bag.Proto").ItemData},     -- 奖励配置
}

-- 怪物尸体奖励配置
GC_MONSTERCORPSE_REWARDCONFIG = {
    {"type",                        1,              "int"},                             -- 1:世界BOSS 2:野外BOSS
    {"monster_id",                  1,              "int"},
    {"curtimes",                    1,              "int"},                             -- 当前已搜寻次数
    {"timeslist",                   10,             ST_GET_TIMESCONSUME},               -- 次数消耗与奖励列表
}

--清除怪物尸体奖励
GC_MONSTERCORPSE_REWARDCLEAR = {
    {"monster_id",                  1,              "int"},
}
